#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
namespace Cephei.QL.Math
{
     // <summary> 
	// ! Initially the class will contain one indexed curve
	// </summary>
    [Guid ("7B185F69-5DB1-4a78-802C-FDDD6299834C"),ComVisible(true)]
	public interface ISampledCurve 
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 Boolean Empty {get;}
        
		 Double FirstDerivativeAtCenter {get;}
        
		 Cephei.QL.Math.IArray Grid {get;}
        
		 Double GridValue(UInt64 i);
        
		 ISampledCurve Regrid(Cephei.QL.Math.IArray new_grid);
        
		 ISampledCurve RegridLogGrid(Double min, Double max);
        
		 ISampledCurve ScaleGrid(Double s);
        
		 Double SecondDerivativeAtCenter {get;}
        
		 ISampledCurve SetGrid(Cephei.QL.Math.IArray prm1);
        
		 ISampledCurve SetLogGrid(Double min, Double max);
        
		 ISampledCurve SetValues(Cephei.QL.Math.IArray prm1);
        
		 ISampledCurve ShiftGrid(Double s);
        
		 UInt64 Size {get;}
        
		 ISampledCurve Swap(Cephei.QL.Math.ISampledCurve prm1);
        
		 Double Value(UInt64 i);
        
		 Double ValueAtCenter {get;}
        
		 Cephei.QL.Math.IArray Values {get;}
    }

    // <summary> 
	// ! Initially the class will contain one indexed curve Factory
	// </summary>
   	[ComVisible(true)]
    public interface ISampledCurve_Factory // : Collection_Factory<ISampledCurve, ICell<ISampledCurve>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        
	    ISampledCurve Create (Cephei.QL.Math.IArray grid);
        
	    ISampledCurve Create (Microsoft.FSharp.Core.FSharpOption<UInt64> gridSize);
    }
}

